python文件和变量读写 您所在的位置:网站首页 shell脚本定义变量 从文件中获取值 python文件和变量读写

python文件和变量读写

2023-12-20 06:39| 来源: 网络整理| 查看: 265

对文件操作首先需要找的文件的路径,os.path 模块可以很好地对路径进行操作问题。

目录 文件读写打开文件读取内容写入内容关闭文件 结构数据变量读写

文件读写

读写文件有3个步骤:

调用 open() 函数打开文件,返回 file 对象;调用 File 对象的 read() 或 write() 方法读或写文件;调用 File 对象的 close() 方法,关闭文件。 打开文件

向 open() 函数传入一个路径,表示需要打开的文件,既可以是相对路径,又可以是绝对路径,返回file对象。

file = open('test.txt') # 这里用的是相对路径

这个命令将以读模式打开文件,也即只允许从文件中读取数据,而不能写入或修改。如果需要写入文件,则需要传入第 2 个参数 w 或 a,表示写模式或添加模式,两者区别将在下文叙述。

file = open('test.txt', 'w')

第 2 个参数可以是 r 表示只读,与默认情况相同。r+ 表示既可读又可写。

读取内容

获取了 file 对象后,可利用 read() 方法读取文件内容,如

file.read(size)

该方法将读取 size 大小的文本,形成一个大的字符串。如果 size 省略或为负,则读取整个文本。如果已经读到了文件末尾,则返回空字符串。

如果需要读取文本中的一行则需要使用 readline() 方法。readlines() 方法可以读取所有的行,list(file) 也可以完成。

file.readline() file.readlines() list(file)

读取内容时会自动获取文本最后的换行符\n。

文件在读取过程中有一个指针,表示读取的位置,可用 tell() 方法获取。

file.tell()

使用 seek() 方法可以让指针到达指定位置,

file.seek(offset, whence)

whence 为0(默认)表示文件开头,1 表示当前位置,2 表示末尾。offset 表示相对偏移量。

写入内容

如需写入文件,创建文件对象时要传入参数 w,表示从头开始写文件,这将覆盖文件中原有内容。如果传入 a,则表示在已有的文本后面添加文本,可理解为向列表末尾添加新内容。在这两种情况下,如果文件名不存在,则会创建新的空文件。

open('test.txt', 'w') file.write('Hello world\n') open('test.txt', 'a') file.write('Hello' + str(2))

write() 方法需要自行添加换行符 \n。 写入整数时要显示地将其转为字符串。

关闭文件

close 方法用于关闭文件。

file.close()

如果不使用这条语句关闭文件,可能会导致有些内容没有写入到文件中。

在打开文件时可能会出现异常,可用 try-except 语句处理,详细可戳此链接。使用上下文管理器 with 语句更加简便读取文件

更详细的文件读写可参考文档。

结构数据

如果需要读取字典这样的结构数据,可以采用JSON格式,这需要借助json模块。

import json

dumps()方法可以查看JSON字符串表示方法的结果。

x = [1, 'simple', 'list'] json.dumps(x) # '[1, "simple", "list"]'

一个类似的方法是dump(),它可以写入文件。

json.dump(x, f)

如果需要从文件中读取则使用load()方法。

x = json.load(f)

更多内容可以查看文档。

变量读写

利用shelve模块可以将变量保存到二进制shelf文件中,也可以从硬盘中恢复变量。如

import shelve shelf = shelve.open('data') l = ['A', 'B', 'C'] shelf['l'] = l shelf.close()

上面这段代码完成了变量保存。如果要读取数据

shelf = shelve.open('data') shelf['l'] shelf.close()

这里打开文件不必指定读或写,因为打开之后既能读又能写。

从上面代码可以看出,shelf文件类似于字典,因此它可以使用keys()和values()方法,如

list(shelf.keys()) list(shelf.values())

这两个方法可戳此链接查看。

更详细的内容可以查看文档。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有